Improve detection of input device source type
authorThomas Jaeger <ThJaeger@gmail.com>
Mon, 28 Sep 2009 05:39:42 +0000 (01:39 -0400)
committerAlexander Larsson <alexl@redhat.com>
Mon, 28 Sep 2009 14:08:42 +0000 (16:08 +0200)
This detection code is not 100% reliable, but it should fare much better
than the current code, which just compares the device name to a fixed
set of strings.  Many applications depend on erasers being recognized
reliably, so we start by checking for a device name containing the
substring 'eraser'.

Signed-off-by: Thomas Jaeger <ThJaeger@gmail.com>
gdk/x11/gdkinput-x11.c

index c0b71e7bef114484eeff64ffd9c14519c80a6da3..08051074e5af5d86d2824d93ace0beeb2db6ed89 100644 (file)
@@ -111,17 +111,15 @@ gdk_input_device_new (GdkDisplay  *display,
 
   tmp_name = g_ascii_strdown (gdkdev->info.name, -1);
 
-  if (!strcmp (tmp_name, "pointer"))
-    gdkdev->info.source = GDK_SOURCE_MOUSE;
-  else if (!strcmp (tmp_name, "wacom") ||
-          !strcmp (tmp_name, "pen"))
-    gdkdev->info.source = GDK_SOURCE_PEN;
-  else if (!strcmp (tmp_name, "eraser"))
+  if (g_strrstr (tmp_name, "eraser"))
     gdkdev->info.source = GDK_SOURCE_ERASER;
-  else if (!strcmp (tmp_name, "cursor"))
+  else if (g_strrstr (tmp_name, "cursor"))
     gdkdev->info.source = GDK_SOURCE_CURSOR;
-  else
+  else if (g_strrstr (tmp_name, "wacom") ||
+          g_strrstr (tmp_name, "pen"))
     gdkdev->info.source = GDK_SOURCE_PEN;
+  else
+    gdkdev->info.source = GDK_SOURCE_MOUSE;
 
   g_free(tmp_name);